
// Boost Includes ==============================================================
#include <boost/python.hpp>
#include <boost/cstdint.hpp>

// Includes ====================================================================
#include <OpenSG/OSGMatrixCameraDecorator.h>
#include <OpenSG/OSGMatrixCameraDecoratorBase.h>
#include <OpenSG/OSGDrawAction.h>
#include <OpenSG/OSGViewport.h>
#include <OsgPtrHelpers.h>

// Using =======================================================================
using namespace boost::python;

// Declarations ================================================================
namespace  {

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(osg_MatrixCameraDecorator_dump_overloads_0_2, dump, 0, 2)


}// namespace 


// Module ======================================================================
void Export_src_pyste_gen_MatrixCameraDecorator()
{
    scope* osg_MatrixCameraDecoratorBase_scope = new scope(
    class_< osg::MatrixCameraDecoratorBase, bases< osg::CameraDecorator > , boost::noncopyable >("MatrixCameraDecoratorBase", no_init)
//        .def_readonly("PreViewingFieldMask", &osg::MatrixCameraDecoratorBase::PreViewingFieldMask)
//        .def_readonly("PostViewingFieldMask", &osg::MatrixCameraDecoratorBase::PostViewingFieldMask)
//        .def_readonly("PreProjectionTranslationFieldMask", &osg::MatrixCameraDecoratorBase::PreProjectionTranslationFieldMask)
//        .def_readonly("PostProjectionTranslationFieldMask", &osg::MatrixCameraDecoratorBase::PostProjectionTranslationFieldMask)
//        .def_readonly("PreProjectionFieldMask", &osg::MatrixCameraDecoratorBase::PreProjectionFieldMask)
//        .def_readonly("PostProjectionFieldMask", &osg::MatrixCameraDecoratorBase::PostProjectionFieldMask)
//        .def_readonly("MTInfluenceMask", &osg::MatrixCameraDecoratorBase::MTInfluenceMask)
        .def("getClassType", &osg::MatrixCameraDecoratorBase::getClassType, return_internal_reference< 1 >())
        .def("getClassTypeId", &osg::MatrixCameraDecoratorBase::getClassTypeId)
        .def("getType", (osg::FieldContainerType& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getType, return_internal_reference< 1 >())
        .def("getType", (const osg::FieldContainerType& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getType, return_internal_reference< 1 >())
        .def("getContainerSize", &osg::MatrixCameraDecoratorBase::getContainerSize)
        //.def("getPreViewing", (osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getPreViewing, return_value_policy< copy_const_reference >())
        .def("getPreViewing", (const osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getPreViewing, return_value_policy< copy_const_reference >())
        //.def("getPostViewing", (osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getPostViewing, return_value_policy< copy_const_reference >())
        .def("getPostViewing", (const osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getPostViewing, return_value_policy< copy_const_reference >())
        //.def("getPreProjectionTranslation", (osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getPreProjectionTranslation, return_value_policy< copy_const_reference >())
        .def("getPreProjectionTranslation", (const osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getPreProjectionTranslation, return_value_policy< copy_const_reference >())
        //.def("getPostProjectionTranslation", (osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getPostProjectionTranslation, return_value_policy< copy_const_reference >())
        .def("getPostProjectionTranslation", (const osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getPostProjectionTranslation, return_value_policy< copy_const_reference >())
        //.def("getPreProjection", (osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getPreProjection, return_value_policy< copy_const_reference >())
        .def("getPreProjection", (const osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getPreProjection, return_value_policy< copy_const_reference >())
        //.def("getPostProjection", (osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() )&osg::MatrixCameraDecoratorBase::getPostProjection, return_value_policy< copy_const_reference >())
        .def("getPostProjection", (const osg::Matrix& (osg::MatrixCameraDecoratorBase::*)() const)&osg::MatrixCameraDecoratorBase::getPostProjection, return_value_policy< copy_const_reference >())
        .def("setPreViewing", &osg::MatrixCameraDecoratorBase::setPreViewing)
        .def("setPostViewing", &osg::MatrixCameraDecoratorBase::setPostViewing)
        .def("setPreProjectionTranslation", &osg::MatrixCameraDecoratorBase::setPreProjectionTranslation)
        .def("setPostProjectionTranslation", &osg::MatrixCameraDecoratorBase::setPostProjectionTranslation)
        .def("setPreProjection", &osg::MatrixCameraDecoratorBase::setPreProjection)
        .def("setPostProjection", &osg::MatrixCameraDecoratorBase::setPostProjection)
        .def("getBinSize", &osg::MatrixCameraDecoratorBase::getBinSize)
        .def("copyToBin", &osg::MatrixCameraDecoratorBase::copyToBin)
        .def("copyFromBin", &osg::MatrixCameraDecoratorBase::copyFromBin)
        .def("create", &osg::MatrixCameraDecoratorBase::create)
        .def("createEmpty", &osg::MatrixCameraDecoratorBase::createEmpty)
        .def("shallowCopy", &osg::MatrixCameraDecoratorBase::shallowCopy)
        .staticmethod("getClassType")
        .staticmethod("create")
        .staticmethod("createEmpty")
        .staticmethod("getClassTypeId")
    );

    scope().attr("PostProjectionFieldId") = (int)osg::MatrixCameraDecoratorBase::PostProjectionFieldId;
    scope().attr("PreProjectionTranslationFieldId") = (int)osg::MatrixCameraDecoratorBase::PreProjectionTranslationFieldId;
    scope().attr("PostViewingFieldId") = (int)osg::MatrixCameraDecoratorBase::PostViewingFieldId;
    scope().attr("PostProjectionTranslationFieldId") = (int)osg::MatrixCameraDecoratorBase::PostProjectionTranslationFieldId;
    scope().attr("PreViewingFieldId") = (int)osg::MatrixCameraDecoratorBase::PreViewingFieldId;
    scope().attr("NextFieldId") = (int)osg::MatrixCameraDecoratorBase::NextFieldId;
    scope().attr("PreProjectionFieldId") = (int)osg::MatrixCameraDecoratorBase::PreProjectionFieldId;

    delete osg_MatrixCameraDecoratorBase_scope;

    class_< osg::MatrixCameraDecorator, bases< osg::MatrixCameraDecoratorBase > , boost::noncopyable, osg::MatrixCameraDecoratorRefPtr >("MatrixCameraDecorator", no_init)
        .def("changed", &osg::MatrixCameraDecorator::changed)
        .def("getProjection", &osg::MatrixCameraDecorator::getProjection)
        .def("getProjectionTranslation", &osg::MatrixCameraDecorator::getProjectionTranslation)
        .def("getViewing", &osg::MatrixCameraDecorator::getViewing)
        .def("dump", &osg::MatrixCameraDecorator::dump, osg_MatrixCameraDecorator_dump_overloads_0_2())
    ;


    register_ptr_to_python<osg::MatrixCameraDecoratorPtr>();
    implicitly_convertible<osg::MatrixCameraDecoratorRefPtr, osg::MatrixCameraDecoratorPtr>();
    implicitly_convertible<osg::MatrixCameraDecoratorPtr, osg::CameraDecoratorPtr>();
    
    def("RefPtr", &pyopensg::ToRefPtr<osg::MatrixCameraDecoratorPtr>);
    def("FCPtr", &pyopensg::ToFcPtr<osg::MatrixCameraDecoratorPtr>);
}

